This invention relates to an automated, non-intrusive process for identifying the exact make and model type of a computer.
With the ever increasing versatility and interchangeability of personal computers, as evidenced by the recent emergence of the plug-and-play standard for peripherals, the actual physical contents of a personal computer (PC) have become increasingly harder to determine. A cursory glance at the outside of a computer will tell you little about the machine""s actual contents in this age of microprocessor replacement, upgrades, and accelerator chips. However, as network computing has become the norm in the business world, knowledge of the contents of each computer on the network has become more important than ever to make sure that an upgrade in network software or hardware will not be incompatible or inoperable on any of the machines attached to that network.
A solution to the problem of inventorying computers on a network has become even more imperative as the new millennium approaches. Many software and hardware programs will experience problems because their underlying program code is based on a two digit representation of the year. Hence, as the year goes from 1999 (represented in the computer as xe2x80x9899xe2x80x99) to 2000 (represented in the computer as xe2x80x9800xe2x80x99), much computer hardware and associated software applications will give errant results because they calculate the year xe2x80x9800xe2x80x99 to correspond to 1900:99 years before 1999. Ultimately, some machines may fail entirely. Because of the vast array of computers attached to most networks, all computers must be properly identified and cataloged to limit the amount and severity of problems that occur as the millennium changes. Any step taken now to avoid a catastrophe in the future is a step well taken.
Obviously, the first step in correcting a potentially wide-spread network problem is to identify the computers that reside on that network. In the past, machines were often inventoried by physical inspection. This process entails forcing the user to log off of their computer for a length of time, physically opening the PC, and identifying the computer by reading the labels on the BIOS, microprocessor, and other added chips and circuitry. Such a process is disruptive and carries with it the possibility that the physical handling of the computer chassis and internal parts will cause an internal part to fail because of, for example, static electricity.
Some software programs have tried to identify personal computer components in a less intrusive way. These programs can perform some rudimentary identification tasks, such as polling the microprocessor for manufacturer information, but these methods fall well short of the complete personal computer inventory that is necessary and prudent before a major network upgrade or in contemplation of fixing any possible year 2000 problems. As software and hardware become more complex, pushing the limits of a computer""s capability, some programs or peripherals may distinguish between two computers that have the same make and model number, but were manufactured several months apart and, hence, have different BIOS versions. For example, a second version of a BIOS may be written to facilitate using a large hard drive of multiple gigabyte capacity. Because some components can distinguish between such subtle differences in PC""s, the computers on a network must be individually identified at the BIOS level.
One particular prior art system is a graphical system descriptor method and system in U.S. Pat. No. 5,305,437 to Fritze et al. Fritze et al. disclose a method and system for a graphical hardware description and testing interface for use in conjunction with a data system. More specifically, the Fritze method contains a step where the data processing system is polled to determine the configurationxe2x80x94layout of slots, subslots, components, and subcomponents. The process begins with a call to the BIOS to determine model/submodel and the identity of the system. While Fritze et al. may scan the BIOS for basic computer information, Fritze et al. do not contemplate the intensive BIOS scanning of the present invention that is but one element in the larger automatic computer inventorying process disclosed here.
The Basic Input/Output System (BIOS) of a computer is the lowest layer of system software between the processor and the user. The BIOS is a collection of routines that control I/O devices and provide basic computer system services. In personal computers, the BIOS is usually resident in a Read Only Memory (ROM) within the computer to alleviate the need to load it from an external source every time the computer is booted.
The BIOS services are accessed through software interrupts that are generally called using assembly language. Many of the software interrupts are standard in the computer industry, which enables portability of programs that use these BIOS software interrupts. Also, many common programming languages, such as the xe2x80x98Cxe2x80x99 language, contain preprogrammed functions that can be used to access the BIOS memory area.
One part of the BIOS contains a table of hexadecimal entries that describe the type of computer and BIOS revision date. The manufacturer uses these entries in tandem to uniquely identify a computer. These fields include the computer""s model, submodel, BIOS revision number, features, reserved words, and a string representing the BIOS revision date. Taken as a whole, these entries can distinguish between not only different computer manufacturers and model numbers, but between two computers of the exact same manufacturer and model number that contain different versions of BIOS. Although a small change in hardware, a newer BIOS version may correct a problem that causes certain low level software or hardware (large capacity disk drive) to fail, and hence, only a computer containing the newer BIOS version can be used with that particular piece of software or hardware.
Because of the complexity of recent software innovations and the extent to which computers are pushed by the new software, such subtle changes in the BIOS must be identified before deciding on the proper choice of software to be used on a machine, especially in a networked environment. For years, some programs have scanned small areas of the BIOS to get some computer identification information, but there remains a need in the art to scan the complete BIOS identification area and develop an automated process for inventorying a computer to a greater extent.
Towards this end, there is a need in the art for a method to perform BIOS scanning and identification code comparison in an efficient, non-intrusive way that can be used by single users and large companies to inventory their computers and prepare for software upgrades and impending year 2000 issues.
It is therefore an object of the present invention to provide a non-intrusive process for inventorying a personal computer""s exact model type. More specifically, it is an object of the present invention to provide a process for completely inventorying a personal computer by a non-intrusive software application that can scan the computer""s BIOS and generate an identification string that can be compared to a table of known identification strings to determine, down to the BIOS revision level, the exact type of personal computer that is being queried.
Towards that end, the exact model type of a personal computer can be established by scanning the BIOS of the computer and copying selected segments thereof. These scanned segments can then be concatenated to form a text string that identifies the computer. Finally, this identification string can be compared to a table of previously identified strings to establish the exact make and model type of a personal computer.
This method is fast, as the method is largely software dependent with no physical tearing apart of the inventoried PC, and this method is much less likely to cause any physical fault in the personal computer because no rough manipulation of the chassis is necessary. Also, this method is more likely to obtain the correct and true identification results because a physical examination of the computer can produce incorrect results because of mislabeled components or a mistake of identification. The BIOS scanning method of the present invention is more complete than any of the previous computer identification methods as it scans the low level BIOS of the computer to find its information. Finally, the present method has complete adaptability. As new, unknown identification strings are obtained from the BIOS, a quick physical inspection of the unknown computer will allow its identification and subsequent entry into the identification table so, from that point on, the previously unknown identification string will be known.
In one aspect of the present invention, the scanning program is integrated into the network login process of users of a computer network. Here, as part of the login process, the computer calls the BIOS scanning program to be executed from the login server. The program uses low level software interrupts to poll the BIOS area of computer memory to obtain the computer identification information. In response to the software interrupt requests, the computer returns hexadecimal values that correspond in our preferred embodiment to a predetermined string including the model, submodel, revision number, features, reserved word 1, reserved word 2, and the BIOS date string. The software program makes a character string that consists of these scanned values separated by hyphens. The string is assembled, for example, as model(hex)-submodel(hex)-revisionnumber(hex)-features(hex)-reservedword1(hex)-reservedword2(hex)-BIOSdatestring. Another order may also be appropriate depending on the application.
This character string identifies the exact computer manufacturer and model type that is being scanned. The string is then passed back to the server to be used as an index to a table that identifies a one-to-one correlation between these BIOS identification strings and an ultimate computer manufacturer and model type. The table reads the input identification string and compares this string to the first known identification string in the table. If the strings match, the corresponding known computer manufacturer and model type are the output of the program, to be used by other programs or means for inventorying the computers of the network.
If the strings do not match, the scanned data string is subsequently compared to the next known identification string in the table. Again, if a match is found, the correctly identified manufacturer name and model number are output. This process continues until either a match is found or the table is exhausted. If no match is found, the unknown, or unresolved, identification string is inserted as the last entry of the table.
Once an unresolved string is entered in the table, the computer that was scanned to produce the unresolved string should be identified by some means. Then, the appropriate corresponding manufacturer name and model type should be input into the table. Now, the unresolved string has been resolved. This identification could be performed by having the data storage computer automatically dial the telephone number associated with the user of the scanned computer or by physical inspection of the machine by the system administrator. In any event, the unresolved, scanned BIOS identification string has now become a known, or resolved, entry in the table for future use.
This expandability is essential to keep pace with the rapidly changing world of computers where upgrades occur often. Because any newly resolved BIOS identification screen is added to the computer manufacturer table or data base, a new BIOS version only needs to be physically identified once. Once a new BIOS identification string has been resolved, all subsequent new users of the same BIOS will be identified by the data table or data base. This automation saves employee time and money that previously would have been spent physically identifying each new computer that entered a specific work environment.
These and other objects and features of the present invention will be apparent upon consideration of the following detailed description of preferred embodiments thereof, presented in connection with the following drawings in which like reference numerals identify like elements throughout.